class Evaluacion < ActiveRecord::Base
  belongs_to :concurso
  has_many :evaluacion_ventas, :order => 'participante_id, marca_id'
  has_many :evaluacion_premios, :order => 'participante_id, marca_id'
  has_many :evaluacion_objetivos
  has_many :puntaje_meseros
  has_many :puntaje_centro_consumos
  has_many :canjes
  
  validates_presence_of :fecha_evaluacion, :ejecutivo_id
  
  def venta_attributes=(venta_attributes)
    venta_attributes.each do |attributes|
      evaluacion_ventas.build(attributes)
    end
  end

  def consecutivo
    "%06d" % id + '/' + fecha_evaluacion.strftime("%Y")

  end
  
  def premio_attributes=(premio_attributes)
    premio_attributes.each do |attributes|
      evaluacion_premios.build(attributes)
    end
  end
  
  def objetivos_attributes=(objetivo_attributes)
    objetivo_attributes.each do |attributes|
      evaluacion_objetivos.build(attributes)
    end
  end
  
  def puntos_premios=(puntos_premios)
    puntos_premios.each do |puntos|
      attributes = puntos[0].split('_')
      evaluacion_premios << EvaluacionPremio.new(:participante_id => attributes[0],
        :marca_id => attributes[1], :venta_copas => puntos[1]) unless puntos[1].blank?
    end
  end
  
  def ventas=(ventas)
    ventas.each do |v|
      attributes = v[0].split('_')
      # 0 -> participante_id
      # 1 -> marca_id
      # 2 -> {copas|botellas}
      valor = v[1].to_f

      case attributes[2]
      when "botellas"
        tipo_venta = EvaluacionVenta::BOTELLAS
      when "copas"
        tipo_venta = EvaluacionVenta::COPAS
      end
      
      evaluacion_ventas << EvaluacionVenta.new(:participante_id => attributes[0],
      :marca_id => attributes[1], :tipo_venta => tipo_venta, :cantidad => valor) unless valor == 0
    
    end
  end
  
  def copas_vendidas(participante, marca)
    conditions = {}
    conditions[:participante_id] = participante
    conditions[:marca_id] = marca
    conditions[:evaluacion_id] = id
    conditions[:tipo_venta] = EvaluacionVenta::COPAS
    copas = EvaluacionVenta.sum(:cantidad, :conditions => conditions)
    
    unless copas.blank?
      copas
    else
      0
    end
  end
  
  def botellas_vendidas(participante, marca)
    conditions = {}
    conditions[:participante_id] = participante
    conditions[:marca_id] = marca
    conditions[:evaluacion_id] = id
    conditions[:tipo_venta] = EvaluacionVenta::BOTELLAS
    copas = EvaluacionVenta.sum(:cantidad, :conditions => conditions)
    
    unless copas.blank?
      copas
    else
      0
    end
  end
  
  def copas_vendidas_premios(participante)
    conditions = {}
    conditions[:participante_id] = participante
    conditions[:evaluacion_id] = id
    copas_vendidas = EvaluacionPremio.sum(:venta_copas, :conditions => conditions)
    
    unless copas_vendidas.blank?
      copas_vendidas
    else
      0
    end
   
  end
end
